<?php
/**
 * 用户登录封装类
 * @author flwu
 * 将默认有效期为一天的token,存入redis， 后续根据客户端传递过来的token及user_id 进行有效性教研，除此不信任任何客户端COOKIE
 * 
 * cookie 的有效期设置为10年
 */
class LoginMode {
	
	private $_expire_time = null;
	
	private $_domain = '';
	
	public function __construct() {
		$this->_expire_time = time() + 3600 * 24 * 365 * 10;
		$this->_domain = COOKIEDOMAIN;
	}
	
	/**
	 * 登录成功后COOKIE初始化
	 * @param array $userInfo
	 * 
	 * return bool
	 */
	public function getToken($userInfo) {
		if (!empty($userInfo)) {
            $token = md5($userInfo['base']['id'] . '!@#$%' . date('Ymd'));
            $redisData = core::cache()->factory('DEFAULT', _CACHE_REDIS);
            $redis_key = 'user_info_' . $userInfo['base']['id'];
            $redisData->set($redis_key, array('userInfo' => $userInfo, 'token' => $token), 3600 * 24);
            $userInfo['token'] = $token;
            return $userInfo;
		} else {
			return array();
		}
	}
	
	/**
	 * 检验是否登录
	 * 
	 */
	public function checkLogin($token, $userBaseId) {
		$redis_key = 'user_info_' . $userBaseId;
		$redisData = core::cache()->factory('DEFAULT', _CACHE_REDIS);
		$dataInfo = $redisData->get($redis_key);
		if ($dataInfo['token'] == $token) {
			return $dataInfo['userInfo'];
		} else {
		    return array();
		}
	}
}